/**
 * 
 */
package com.base.myproject.client.tools;

import java.util.ArrayList;
import java.util.List;

import com.base.myproject.client.ui.Loading;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;

/**
 * 命令工厂，负责所有与servlet交互的命令。
 * 所有和servlet交互必须通过此工厂，
 * 避免如同A命令发送到服务器，紧跟B命令发送到服务器，在某种网络环境下，
 * 服务程序先接受到了B命令。
 * @author Administrator
 *2010-1-29
 */
public class CommandFactory {
	
	static boolean isstarted = false;
	//static boolean isallcomplete = false;
	private static final List<Command> commands = new ArrayList<Command>();
	/**
	 * 
	 * @param command
	 */
	
	
	public static void addCommand(Command command)
	{
		GWT.log("command start--"+commands.size()+" name = "+command.name+""+isstarted);
		commands.add(command);
		if(!isstarted)
		start();
	}
	
	public static void removeCommand(Command command)
	{
		commands.remove(command);
//	
	}
	public static void removeCommand()
	{
		if(commands.size()>0)
		Debug.printf("remove-"+commands.remove(0));
	}
	
	private static void start()
	{
		
		//if(!isstarted)
		start(0);
		
	}
	
	protected static void start(int index)
	{
		GWT.log("size="+commands.size()+"  index = "+index);
		if(commands.size()>index)
		{
			
			//isallcomplete = false;
			GWT.log("isstart = "+isstarted);
		//	if(!isstarted)
			{
				isstarted = true;
				Loading.getinstance().connecting(null);
				commands.get(index).Start();
				GWT.log("name  ="+commands.get(index).name);
			}
			
		}
		else
		{
			//MessageBox.alert("错误", "没有命令", null);
			//isallcomplete = true;
			//removeCommand();
			isstarted = false;
			
		}
	}
	
	public static void startnext()
	{
		GWT.log("start next..");
		GWT.log("commands = "+commands);
		removeCommand();
		start();
	}
	/**
	 * 获得但是命令数量（未执行数量）
	 * @return
	 */
	public static int getCommandSize()
	{
		return commands.size();
	}

}
